// src/api/document.ts
import service from '@/utils/request'
import type { DocumentTask, TaskCreateRequest } from '@/types/document'

export const documentApi = {
  // 创建文档生成任务
  async createTask(request: TaskCreateRequest): Promise<DocumentTask> {
    return service.post('/task/create', request)
  },

  // 获取任务详情
  async getTask(taskId: string): Promise<DocumentTask> {
    return service.get(`/task/${taskId}`)
  },

  // 获取任务结果（HTML）- 使用 axios
  async getTaskResult(taskId: string): Promise<string> {
    // 使用 axios 而不是 fetch
    const response = await service.get(`/task/${taskId}/result`, {
      responseType: 'text', // 重要：设置响应类型为 text
    })
    return response
  },

  // 导出文档 - 使用 axios
  async exportDocument(taskId: string, format: 'html' | 'md'): Promise<void> {
    const response = await service.get(`/task/${taskId}/export`, {
      params: { format },
      responseType: 'blob', // 对于文件下载，使用 blob
    })

    // 创建下载链接
    const url = window.URL.createObjectURL(new Blob([response]))
    const link = document.createElement('a')
    link.href = url
    link.setAttribute('download', `database_document.${format}`)
    document.body.appendChild(link)
    link.click()
    link.remove()
    window.URL.revokeObjectURL(url)
  },

  // 获取任务列表
  async getTaskList(params?: {
    page?: number
    size?: number
  }): Promise<{ records: DocumentTask[]; total: number }> {
    return service.get('/task/list', { params })
  },

  // 删除任务
  async deleteTask(taskId: string): Promise<void> {
    return service.delete(`/task/${taskId}`)
  },
}
